#include<bits/stdc++.h>
using namespace std;
int a[1000][1000],m,n;
bool booka[1000][1000];
int xz[8]= {-1,-1,-1,0,0,1,1,1},yz[8]= {-1,0,1,-1,1,-1,0,1}; 
int bv3,lt; 
void dfs(int x,int y) { 
	for(int i=0; i<8; i++) {
		int xx=x+xz[i],yy=y+yz[i];
		if(xx>=0&&xx<n&&yy>=0&&yy<m&&a[xx][yy]==0&&!booka[xx][yy]) { 
			booka[xx][yy]=true;
			dfs(xx,yy);
		}
	}
}
void b(int x,int y) { 
	for(int p=0; p<8; p++) {
		int i=x+xz[p],j=y+yz[p];
		if(i>=0&&i<n&&j>=0&&j<m&&a[i][j]!=-1)
			a[i][j]++;
	}
}
int iff(int x,int y) { 
	for(int i=0; i<8; i++) {
		int xx=x+xz[i];
		int yy=y+yz[i];
		if(xx>=0&&xx<n&&yy>=0&&yy<m&&a[xx][yy]==0)
			return 0;
	}
	return 1;
}
int main() {
	cin>>n>>m;
	for(int i=0; i<n; i++) {
		for(int j=0; j<m; j++) {
			cin>>a[i][j];
			if(a[i][j]==1) a[i][j]=-1;
		}
	}
	for(int i=0; i<n; i++)
		for(int j=0; j<m; j++)
			if(a[i][j]==-1)
				b(i,j);
	for(int i=0; i<n; i++)
		for(int j=0; j<m; j++)
			if(a[i][j]!=0&&a[i][j]!=-1&&iff(i,j))
				bv3++;
	for(int i=0; i<n; i++) {
		for(int j=0; j<m; j++) {
			if(a[i][j]==0&&!booka[i][j]) {
				lt++;
				dfs(i,j);
			}
		}
	}
	bv3+=lt;
	cout<<bv3;
	return 0;
}

